home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / hypercar / xcmd / proglib.sit / Resource Library / stack.txt < prev   
Text File  |  1989-05-28  |  9KB  |  318 lines

  1. -- stack: in
  2. -- format: 8 (HyperCard 1)
  3. -- flags: 0x5000 (can't delete)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=0, y1=0, x2=0, y2=0)
  7. -- screen: Rect(x1=0, y1=0, x2=0, y2=0)
  8. -- card dimensions: w=0 h=0
  9. -- scroll: x=0 y=0
  10. -- background count: 8
  11. -- first background id: 2800
  12. -- card count: 11
  13. -- first card id: 2878
  14. -- list block id: 5709
  15. -- print block id: 0
  16. -- font table block id: 0
  17. -- style table block id: 0
  18. -- free block count: 0
  19. -- free size: 0 bytes
  20. -- total size: 53120 bytes
  21. -- stack block size: 8192 bytes
  22. -- created by hypercard version: 0x00000000
  23. -- compacted by hypercard version: 0x01228000
  24. -- modified by hypercard version: 0x01228000
  25. -- opened by hypercard version: 0x01228000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0x0
  67. ----- HyperTalk script -----
  68. on openStack
  69.   global runHilite, External_Error, StackName, menuVis, msgVis
  70.   put "" into External_Error
  71.   put false into runHilite
  72.   put true into menuVis
  73.   put false into msgVis
  74.   put word two of the long name of this stack into tmp
  75.   put length(tmp) into len
  76.   put char 2 to (len-1) of tmp into StackName
  77.   set lockscreen to true
  78.   push card
  79.   go to card "Add"
  80.   send InitAdd
  81.   go to card "Paste"
  82.   send InitPaste
  83.   pop card
  84.   set lockscreen to false
  85. end openStack
  86.  
  87. -- determine line hit for mouse down in field
  88. function Clickline
  89. if the style of the target is "scrolling" then
  90.   put the scroll of the target into s
  91. else
  92.   put zero into s
  93. end if
  94. return (trunc((s + (item two of the clickloc) - (item two of the rect of the target)) div the textheight of the target) + one)
  95. end Clickline
  96.  
  97. -- should be simpler!
  98. function number_of_cards_of_this_background
  99. if the version >= 1.2 then
  100.   return the number of cds of this bg
  101. end if
  102. set lockscreen to true
  103. put the name of this card into start
  104. put 1 into count
  105. go to next card of this background
  106. repeat while (the name of this card) <> start
  107.   add 1 to count
  108.   go to next card of this background
  109. end repeat
  110. set lockscreen to false
  111. return count
  112. end number_of_cards_of_this_background
  113.  
  114. on AddCard type, name
  115.   if type = "XCMD" then
  116.     go to last card of background "Commands"
  117.   else if type = "XFCN" then
  118.     go to last card of background "Functions"
  119.   else if type = "ICON" then
  120.     go to last card of background "Icons"
  121.   else if type = "CURS" then
  122.     go to last card of background "Cursors"
  123.   else if type = "snd " then
  124.     go to last card of background "Sounds"
  125.   else
  126.     exit AddCard
  127.   end if
  128.   AddNewCard name
  129. end AddCard
  130.  
  131. -- deleteCard & newCard, be fancy with next and prev buttons
  132. on deleteCard
  133.   if number_of_cards_of_this_background() = 2 then
  134.     set visible of background button "Next" to false
  135.     set visible of background button "Prev" to false
  136.     set visible of background button "Scan" to false
  137.   else
  138.     set visible of background button "Next" to true
  139.     set visible of background button "Prev" to true
  140.     set visible of background button "Scan" to true
  141.   end if
  142. end deleteCard
  143.  
  144. on newCard
  145.   if number_of_cards_of_this_background() = 1 then
  146.     set visible of background button "Next" to false
  147.     set visible of background button "Prev" to false
  148.     set visible of background button "Scan" to false
  149.   else
  150.     set visible of background button "Next" to true
  151.     set visible of background button "Prev" to true
  152.     set visible of background button "Scan" to true
  153.   end if
  154. end newCard
  155.  
  156. on doHilite
  157.   global runHilite
  158.  
  159.   if runHilite and not (visible of msg) then
  160.     highlight a
  161.   end if
  162.   put not runHilite into runHilite
  163. end doHilite
  164.  
  165. on resetHighlight
  166.   put "" into background field "HighlightAreas"
  167. end resetHighlight
  168.  
  169. -- deleteRes & renameRes, used for "card" resources e.g. XCMDs
  170. on deleteRes assoc
  171.   global External_Error, StackName
  172.  
  173.   if number_of_cards_of_this_background() = 1 then
  174.     answer "Sorry, you can't delete the last" && background field "resType" with "OK"
  175.     exit deleteRes
  176.   else if (the version >= 1.2) then
  177.     if (the cantDelete of this card) then
  178.       answer "This resource is required by this stack!"
  179.       exit deleteRes
  180.     end if
  181.   end if
  182.  
  183.   answer "PERMANENTLY delete" && background field "Name" & "?" with "Yes" or "No"
  184.   if it = "Yes"
  185.   then
  186.   ResHandle "dele", StackName, background field "resType", background field "Name"
  187.   if "ok" is in External_Error then
  188.     if assoc <> "" then
  189.       repeat while number of lines in assoc > 1 do
  190.         put line 1 of assoc into rname
  191.         delete line 1 of assoc
  192.         put word 1 of rname into rtype
  193.         delete word 1 of rname
  194.         ResHandle "dele", StackName, rtype, rname
  195.       end repeat
  196.     end if
  197.     put the name of next card of this background into dest
  198.     doMenu "Delete Card"
  199.     go to dest
  200.   else
  201.     answer "Delete failed:" && External_Error with "OK"
  202.   end if
  203. end if
  204. end deleteRes
  205.  
  206. on renameRes
  207.   global External_Error, StackName
  208.  
  209.   if (the version >= 1.2) then
  210.     if (the cantDelete of this card) then
  211.       answer "This resource is required by this stack!"
  212.       exit renameRes
  213.     end if
  214.   end if
  215.  
  216.   ask "Rename" && background field "Name" && "to?"
  217.   put it into newname
  218.   if newname <> "" then
  219.     ResHandle "rena", StackName, background field "resType", background field "Name", newname
  220.     if "ok" is in External_Error then
  221.       put newname into background field "Name"
  222.     else
  223.       answer "Rename failed" with "OK"
  224.     end if
  225.   end if
  226.  
  227. end renameRes
  228.  
  229. -- used for "buttoned" resources e.g. icons
  230. on buttonHit
  231.   if background field curButton <> "" then
  232.     set the highlight of card button id (background field curButton) to false
  233.   end if
  234.   set the highlight of the target to true
  235.   put the id of the target into background field curButton
  236. end buttonHit
  237.  
  238. on butRename
  239.   global External_Error, StackName
  240.   if background field "curButton" = "" then
  241.     answer "You must select something first!" with "Oops"
  242.     exit butRename
  243.   end if
  244.   put the short name of button id (background field "curButton") into bname
  245.   ask "Rename" && bname && "to?"
  246.   put it into newname
  247.   if newname <> "" then
  248.     ResHandle "rena", StackName, background field "resType", bname, newname
  249.     if "ok" is in External_Error then
  250.       set the name of button id (background field "curButton") to newname
  251.     else
  252.       answer "Rename failed" with "OK"
  253.     end if
  254.   end if
  255. end butRename
  256.  
  257. on butDelete
  258.   global External_Error, StackName
  259.   if background field "curButton" = "" then
  260.     answer "You must select something first!" with "Oops"
  261.     exit butDelete
  262.   end if
  263.  
  264.   put the short name of button id (background field "curButton") into bname
  265.   if bname = "" then
  266.     answer "You must select a button first" with "Oops"
  267.     exit butDelete
  268.   end if
  269.   if the optionKey is up
  270.   then
  271.   answer "PERMANENTLY delete" && bname & "?" with "Yes" or "No"
  272.   if it = "No"
  273.   then
  274.   exit butDelete
  275. end if
  276. end if
  277.  
  278. set lockscreen to true
  279. if the optionKey is up then
  280.   ResHandle "dele", StackName, background field "resType", bname
  281. end if
  282. if the optionKey is down or "ok" is in External_Error then
  283.   put the loc of button id (background field "curButton") into bloc
  284.   put the number of button id (background field "curButton") into bnum
  285.   put background field "Number"-1 into ix
  286.   put ix into background field "Number"
  287.   choose button tool
  288.   click at bloc
  289.   doMenu "Clear Button"
  290.   choose browse tool
  291.   if ix = 0 then
  292.     if number_of_cards_of_this_background() > 1 then
  293.       put the name of next card of this background into dest
  294.       doMenu "Delete Card"
  295.       go to dest
  296.     else
  297.       put "" into background field "curButton"
  298.       resetHighlight
  299.     end if
  300.   else
  301.     put the id of card button ix into background field "curButton"
  302.     if ix >= bnum then -- not last button
  303.       put ix into z
  304.       repeat while z > bnum
  305.         set the loc of button z to the loc of button (z-1)
  306.         subtract 1 from z
  307.       end repeat
  308.       set the loc of button bnum to bloc
  309.     end if
  310.   end if
  311. else
  312.   answer "Delete failed:" && External_Error with "OK"
  313. end if
  314. set lockscreen to false
  315.  
  316. end butDelete
  317.  
  318.